// 引入模块
const express = require('express')
// 引入 中间件 
const bodyParser = require('body-parser')

// 创建服务
const app = express()

// 配置静态资源
app.use('/public', express.static('./public'))

// 配置使用 art-template 模板引擎
// 1. 先安装 art-template express-art-template npm install --save art-template express-art-template
// 2. 使用 express-art-template 模板引擎
// app.engine('art', require('express-art-template')) // 这样配置 视图模板文件必须以 .art 结尾
// 配置视图文件以 .html 结尾
app.engine('html', require('express-art-template'))
app.set('view options', {
    debug: process.env.NODE_ENV !== 'production'
})

// express 为 response 对象提供了一个 render() 方法
// render() 方法默认不可以使用，但是如果配置了 模板引擎 就可以使用了
// render('html模板名称', { 模板数据 }) 方法有两个参数：html模板名称，模板数据
// 第一个参数不能写路径，默认会去项目中的 views 目录中去查找该模板文件
// express 约定： 开发人员把所有的视图文件放到 views 目录中
// 想要改变默认的模板路径 需要使用  app.set('views', render函数的默认路径)

// 配置 body-parser 中间件
// 配置之后 使用 req.body 来获取 post 方式提交过来的数据
// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }))
// parse application/json
app.use(bodyParser.json())

// 模拟评论数据
const comments = [
    { id: 1, name: '张三', content: 'React 太难了' },
    { id: 2, name: '李四', content: 'NodeJS 也太难了' }
]

// 注册路由
app.get('/', (req, res) => {
    res.render('index.html', { comments })
})

app.get('/post', (req, res) => {
    res.render('post.html')
})

// 评论
app.get('/pinglun', (req, res) => {
    console.log(req.query) // 获取get参数
    const comment = req.query
    comments.push(comment)
    // 重定向到 / 
    res.redirect('/')
})

// 使用 post 提交方式处理评论
app.post('/post', (req, res) => {
    console.log('接收到post请求')
    // 获取 post 请求数据
    // 0. 在 express 中没有获取 post 请求体的 api，需要使用中间件 body-parser
    // 1. 安装中间件 npm install body-parser
    // 2. 配置中间件
    // 3. 配置之后，使用 req.body 来获取 post 提交过来的数据
    console.log(req.body)
    const comment = req.body

    // 处理
    comments.push(comment)

    // 响应
    res.redirect('/')
})

// 启动服务
app.listen(3000, () => {
    console.log('Express Server running ar port 3000')
})